package com.litchi.app;

import com.activeandroid.ActiveAndroid;
import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import com.nostra13.universalimageloader.core.assist.QueueProcessingType;

import android.app.Application;
import android.content.Context;
import android.content.SharedPreferences;
import android.util.Log;

/**
 * 用于初始化ImageLoader。若不执行初始化，下载图片前清除缓存，存在潜在空指针问题
 * @author Administrator
 *
 */
public class MyApplication extends Application {
	/**
	 * 
	 * image加载库相关
	 */
    public ImageLoader imgLoader;
    public DisplayImageOptions options;
    private MyApplication instance;
    private Context mContext;

    public MyApplication getInstance(){
    	return instance;
    }
	
	@Override
	public void onCreate() {
		super.onCreate();
		 instance = this;
		 mContext=this;
		initImageLoader(this);
		ActiveAndroid.initialize(this);
	}
	
	 
 
	public void initImageLoader(Context context) {
//		imgLoader = ImageLoader.getInstance();
//		ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context)
//				.threadPriority(Thread.NORM_PRIORITY - 2)
//				.denyCacheImageMultipleSizesInMemory()
//				.diskCacheFileNameGenerator(new Md5FileNameGenerator())
//				.diskCacheSize(50 * 1024 * 1024)
//				// 50 Mb
//				.tasksProcessingOrder(QueueProcessingType.LIFO)
//				.writeDebugLogs() // Remove for release app
//				.build();
//		// Initialize ImageLoader with configuration.
//		ImageLoader.getInstance().init(config);
//		
		
		imgLoader = ImageLoader.getInstance();
 
		  int diskCacheSize = 800 * 1024 * 1024; // 800M
	        Log.i("", "--------diskCacheSize: " + diskCacheSize);
	        int cpuCount = Runtime.getRuntime().availableProcessors();
	        int threadCount = cpuCount * 2;
	        Log.i("", "---------线程池线程的数量: " + threadCount);
	        ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context)
	            .threadPriority(Thread.NORM_PRIORITY - 1)
	            .threadPoolSize(threadCount)
	            .memoryCacheExtraOptions(800, 480)
	            // .memoryCache(null)
	            // .tasksProcessingOrder(QueueProcessingType.LIFO)
	            .diskCacheSize(diskCacheSize)
	            .denyCacheImageMultipleSizesInMemory()
	            
	            // WeakMemoryCache（这个类缓存bitmap的总大小没有限制，唯一不足的地方就是不稳定，缓存的图片容易被回收掉）
	            // LruMemoryCache（这个类就是这个开源框架默认的内存缓存类，缓存的是bitmap的强引用)
	            // .memoryCache(new WeakMemoryCache())
	            .memoryCacheSizePercentage(5)
	            // 默认是12.5
	            
	            // default
	            .diskCacheFileNameGenerator(new Md5FileNameGenerator())
	            // 使用后进先出的加载策略，能使最后进入的任务先执行
	            .tasksProcessingOrder(QueueProcessingType.LIFO)
	            
	            // .writeDebugLogs() // Remove for release app
	            .build();
	        // Initialize ImageLoader with configuration.
	        ImageLoader.getInstance().init(config);    
	}
}
